home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctj0987.arc / MACRO.C < prev    next >
Text File  |  1987-07-02  |  6KB  |  188 lines

  1. /*
  2.  * MACRO -- PC Tech Journal Laser Printer Macro Tests
  3.  *
  4.  * Version 1.0
  5.  *
  6.  * Copyright (c) 1987, Ziff Communications Company
  7.  * Program by: Rainer McCown
  8.  *
  9.  * This program creates three macros that draw raster graphics.
  10.  * Then other macros are called which in turn call the first
  11.  * macros.  The final test determines the maximum calling depth.
  12.  */
  13.  
  14. #include "io.h"
  15.  
  16. #define STD_OUT 1
  17.  
  18. extern void sndl(char [], int),
  19.         snd (char []),
  20.         setbinary(int);
  21.  
  22. /******************************* MAIN *******************************/
  23.  
  24. void main()
  25.  
  26. {
  27.  int row, cnt, bit;
  28.  unsigned char byte;
  29.  
  30.  /* Change STD_OUT to binary mode to avoid
  31.     converting LFs to CR,LF and to avoid
  32.     stopping on EOFs
  33.   */
  34.  
  35.  setbinary(STD_OUT);
  36.  
  37.  /* Initialize the printer */
  38.  
  39.  snd("\x1BE");                  /* Reset the printer   */
  40.  snd("\x1B&l0E");               /* Zero the top margin */
  41.  snd("\x1B&s1C");               /* Disable EOL wrap    */
  42.  snd("\x1B9");                  /* Clear margins       */
  43.  snd("\x1B&l0O");               /* Landscape mode      */
  44.  
  45.  /* Build the macros  */
  46.  
  47.  snd("\x1B&f1Y\x1B&f0X");       /* Start macro #1 definition */
  48.  snd("\x1B*t150R");             /* Resolution = 150dpi  */
  49.  snd("\x1B*r1A");               /* Start raster graphic  */
  50.  
  51.  /* Send the bit pattern for a hollow box */
  52.  
  53.  snd("\x1B*b5W\xFF\xFF\xFF\xFF\xFF");   /* Top    */
  54.  for (cnt = 0; cnt < 31; cnt ++)    /* Mid      */
  55.       sndl("\x1B*b5W\x80\x00\x00\x00\x01", 10);
  56.  snd("\x1B*b5W\xFF\xFF\xFF\xFF\xFF");   /* Bottom */
  57.  
  58.  /* End the box and the macro */
  59.  snd("\x1B*rB\x1B&f1X");
  60.  
  61.  /* Position cursor, execute macro #1 */
  62.  snd("\x1B*p100X\x1B*p120Y\x1B&f1y2X");
  63.  
  64.  
  65.  snd("\x1B&f2Y\x1B&f0X");       /* Start macro #2 definition */
  66.  snd("\x1B*t100R");             /* Resolution = 100dpi  */
  67.  snd("\x1B*r1A");               /* Start raster graphic  */
  68.  
  69.  /* Send the bit pattern for an I  */
  70.  
  71.  snd("\x1B*b5W\xFF\xFF\xFF\xFF\xFF");   /* Top    */
  72.  for (cnt = 0; cnt < 31; cnt ++)    /* Mid      */
  73.       sndl("\x1B*b5W\x00\x00\x18\x00\x00", 10);
  74.  snd("\x1B*b5W\xFF\xFF\xFF\xFF\xFF");   /* Bottom */
  75.  
  76.  /* End the I and the macro */
  77.  snd("\x1B*rB\x1B&f1X");
  78.  
  79.  /* Position cursor, execute macro #2 */
  80.  snd("\x1B*p300X\x1B*p100Y\x1B&f2y2X");
  81.  
  82.  
  83.  /* Start macro #3 definition */
  84.  snd("\x1B&f3Y\x1B&f0X");
  85.  
  86.  /* Position and then call macros #1,#2,#1  */
  87.  snd("\x1B*p+00X\x1B*p+00Y\x1B&f1y3X");
  88.  snd("\x1B*p+35X\x1B*p-82Y\x1B&f2y3X");
  89.  snd("\x1B*p+75X\x1B*p-82Y\x1B&f1y3X");
  90.  
  91.  /* End macro #3 definition */
  92.  snd("\x1B&f1X");
  93.  
  94.  /* Position cursor, execute macro #3 */
  95.  snd("\x1B*p900X\x1B*p100Y\x1B&f3y2X");
  96.  
  97.  snd("\x1B&f0Y\x1B&f0X");       /* Start macro #0 definition */
  98.  snd("\x1B*t300R");             /* Resolution = 300dpi  */
  99.  snd("\x1B*r1A");               /* Start raster graphic  */
  100.  
  101.  /* Send the bit pattern for a solid box */
  102.  
  103.  snd("\x1B*b5W\xFF\xFF\xFF\xFF\xFF");   /* Top    */
  104.  for (cnt = 0; cnt < 31; cnt++)     /* Mid      */
  105.       snd("\x1B*b5W\xFF\xFF\xFF\xFF\xFF");
  106.  snd("\x1B*b5W\xFF\xFF\xFF\xFF\xFF");   /* Bottom */
  107.  
  108.  /* End the box and macro #0 */
  109.  snd("\x1B*rB\x1B&f1X");
  110.  
  111.  /* Position cursor, execute macro #0 */
  112.  snd("\x1B*p500X\x1B*p130Y\x1B&f0y2X");
  113.  
  114.  
  115.  /* Start macro #32768 definition */
  116.  snd("\x1B&f32768Y\x1B&f0X");
  117.  
  118.  /* Position and then call macros #0,#2,#3  */
  119.  snd("\x1B*p100X\x1B*p730Y\x1B&f0y3X");
  120.  snd("\x1B*p135X\x1B*p700Y\x1B&f2y3X");
  121.  snd("\x1B*p700X\x1B*p700Y\x1B&f3y3X");
  122.  
  123.  /* End macro #32768 definition */
  124.  snd("\x1B&f1X");
  125.  
  126.  /* Position cursor, execute macro #32768  */
  127.  snd("\x1B*p900X\x1B*p100Y\x1B&f32768y2X");
  128.  
  129.  /***************** Start macro depth test ****************/
  130.  /* The LaserJet allows a depth of two only */
  131.  
  132.  snd("\x1B&f6Y\x1B&f0X");       /* Start macro #6 definition */
  133.  /* Position and then call macro #7  */
  134.  snd("\x1B*p+50X\x1B*p+70Y6\x1B&f7y3X");
  135.  snd("a\x1B&f1X");               /* End macro #6 definition */
  136.  
  137.  snd("\x1B&f7Y\x1B&f0X");       /* Start macro #7 definition */
  138.  /* Position and then call macro #8  */
  139.  snd("\x1B*p+50X\x1B*p+70Y7\x1B&f8y3X");
  140.  snd("b\x1B&f1X");               /* End macro #7 definition */
  141.  
  142.  snd("\x1B&f8Y\x1B&f0X");       /* Start macro #8 definition */
  143.  /* Position and then call macro #9  */
  144.  snd("\x1B*p+50X\x1B*p+70Y8\x1B&f9y3X");
  145.  snd("c\x1B&f1X");               /* End macro #8 definition */
  146.  
  147.  snd("\x1B&f9Y\x1B&f0X");       /* Start macro #9 definition */
  148.  /* Position and then call macro #10 */
  149.  snd("\x1B*p+50X\x1B*p+70Y9\x1B&f10y3X");
  150.  snd("d\x1B&f1X");               /* End macro #9 definition */
  151.  
  152.  snd("\x1B&f10Y\x1B&f0X");      /* Start macro #10 definition */
  153.  /* Position and then call macro #10 */
  154.  snd("\x1B*p+50X\x1B*p+70Y10\x1B&f10y3X");
  155.  snd("e\x1B&f1X");               /* End macro #10 definition */
  156.  
  157.  snd("\x1B&f11Y\x1B&f0X");      /* Start macro #11 definition */
  158.  /* Position and then redefine macro #11  */
  159.  snd("\x1B*p+50X\x1B*p+70Y11");
  160.  snd("\x1B&f11Y\x1B&f0X");      /* Restart macro #11 definition */
  161.  snd("\x1B*p+50X\x1B*p+70Y11");
  162.  snd("\x1B&f11Y\x1B&f0X");      /* Restart macro #11 definition */
  163.  snd("\x1B*p+50X\x1B*p+70Y11");
  164.  snd("\x1B&f11Y\x1B&f0X");      /* Restart macro #11 definition */
  165.  snd("\x1B*p+50X\x1B*p+70Y11");
  166.  snd("f\x1B&f1X");               /* End macro #11 definition */
  167.  
  168.  snd("\x1B&f-1Y\x1B&f0X");      /* Start macro #-1 definition */
  169.  /* Position and type -1  */
  170.  snd("\x1B*p+50X\x1B*p+70Y-1");
  171.  snd("g\x1B&f1X");               /* End macro #-1 definition */
  172.  
  173.  /* Position cursor, execute macro #6  */
  174.  snd("\x1B*p100X\x1B*p900Y\x1B&f6y2X");
  175.  
  176. /******************* End macro depth test ****************/
  177.  
  178.  snd("\x1B*p400X\x1B*p900Y\x1B&f10y2X"); /* recursive test */
  179.  snd("\x1B*p800X\x1B*p900Y\x1B&f11y2X"); /* redefinition test */
  180.  snd("\x1B*p1200X\x1B*p900Y\x1B&f-1y2X");
  181.  
  182. /* Eject page */
  183.  
  184.  snd("\f");
  185.  
  186. } /* End MAIN */
  187.  
  188.